/**
 * 伪代码
 */

function require(file) {
  // 1.将相对路径转化为绝对路径，定位目标文件
  let absolutePath = path.resolve(__dirname, file)
  // 2.缓存检测
  if (catches[absolutePath]) {
    return catches[absolutePath]
  }
  // 3.读取文件的代码
  let code = fstat.readFileSync(absolutePath).toString()
  // 4.包裹为一个函数，然后执行
  let module = {}
  let exports = module.exports = {}
    (function (exports, require, module, __filename, __dirname) {
      const test = {
        name: '尚硅谷'
      }
      module.exports = test

      // 输出
      console.log(arguments.callee.toString());

    })(exports, require, module, __filename, __dirname)
  // 5.缓存结果
  catches[absolutePath] = module.exports
  // 6.返回 module.exports 的值
  return module.exports
}

const m = require('./main.js')